# Домашнее задание к занятию "`Очереди RabbitMQ`" - `Исаенков Евгений`

---

### Задание 1

Установка RabbitMQ
Используя Vagrant или VirtualBox, создайте виртуальную машину и установите RabbitMQ. Добавьте management plug-in и зайдите в веб-интерфейс.

Итогом выполнения домашнего задания будет приложенный скриншот веб-интерфейса RabbitMQ.

### Ответ

![Название скриншота 1](https://github.com/Udjin79/netology_hw/blob/main/img/sdb11_hw4_1.png?raw=true)

---

### Задание 2

Отправка и получение сообщений
Используя приложенные скрипты, проведите тестовую отправку и получение сообщения. Для отправки сообщений необходимо запустить скрипт producer.py.

Для работы скриптов вам необходимо установить Python версии 3 и библиотеку Pika. Также в скриптах нужно указать IP-адрес машины, на которой запущен RabbitMQ, заменив localhost на нужный IP.

```$ pip install pika```

Зайдите в веб-интерфейс, найдите очередь под названием hello и сделайте скриншот. После чего запустите второй скрипт consumer.py и сделайте скриншот результата выполнения скрипта

В качестве решения домашнего задания приложите оба скриншота, сделанных на этапе выполнения.

Для закрепления материала можете попробовать модифицировать скрипты, чтобы поменять название очереди и отправляемое сообщение.

### Ответ

![Название скриншота 3](https://github.com/Udjin79/netology_hw/blob/main/img/sdb11_hw4_3.png?raw=true)
![Название скриншота 2](https://github.com/Udjin79/netology_hw/blob/main/img/sdb11_hw4_2.png?raw=true)
![Название скриншота 4](https://github.com/Udjin79/netology_hw/blob/main/img/sdb11_hw4_4.png?raw=true)

---

### Задание 3

Подготовка HA кластера
Используя Vagrant или VirtualBox, создайте вторую виртуальную машину и установите RabbitMQ. Добавьте в файл hosts название и IP-адрес каждой машины, чтобы машины могли видеть друг друга по имени.

Пример содержимого hosts файла:

```
$ cat /etc/hosts
192.168.0.10 rmq01
192.168.0.11 rmq02
```

После этого ваши машины могут пинговаться по имени.

Затем объедините две машины в кластер и создайте политику ha-all на все очереди.

В качестве решения домашнего задания приложите скриншоты из веб-интерфейса с информацией о доступных нодах в кластере и включённой политикой.

Также приложите вывод команды с двух нод:

```$ rabbitmqctl cluster_status```

Для закрепления материала снова запустите скрипт producer.py и приложите скриншот выполнения команды на каждой из нод:

```$ rabbitmqadmin get queue='hello'```

После чего попробуйте отключить одну из нод, желательно ту, к которой подключались из скрипта, затем поправьте параметры подключения в скрипте consumer.py на вторую ноду и запустите его.

Приложите скриншот результата работы второго скрипта.

### Ответ

![Название скриншота 6](https://github.com/Udjin79/netology_hw/blob/main/img/sdb11_hw4_6.png?raw=true)
![Название скриншота 7](https://github.com/Udjin79/netology_hw/blob/main/img/sdb11_hw4_7.png?raw=true)
![Название скриншота 8](https://github.com/Udjin79/netology_hw/blob/main/img/sdb11_hw4_8.png?raw=true)
![Название скриншота 9](https://github.com/Udjin79/netology_hw/blob/main/img/sdb11_hw4_9.png?raw=true)

---

### Задание 4

Напишите плейбук, который будет производить установку RabbitMQ на любое количество нод и объединять их в кластер. При этом будет автоматически создавать политику ha-all.

Готовый плейбук разместите в своём репозитории.

### Ответ

[Ansible Playbook](https://github.com/Udjin79/netology_hw/blob/main/files/rabbitmq_cluster.yml)
